package es.efor.ics.gev.dao.jpa;

import org.springframework.stereotype.Repository;

import es.efor.ics.gev.dao.DocumentoDao;
import es.efor.ics.gev.model.Documento;
import es.efor.ics.gev.model.User;

/**
 * This class interacts with EntityManager to save/delete and retrieve
 * <code>Documento</code> objects.
 * 
 * @author dlisbona
 *
 */
@Repository("documentoDao")
public class DocumentoDaoJpa extends GenericDaoJpa<Documento, Long>
		implements
			DocumentoDao {

	/**
     * Constructor that sets the entity to Documento.class.
     */
	public DocumentoDaoJpa() {
		super(Documento.class);	
	}

	/**
	 * {@inheritDoc}
	 */	
	public Documento finalizarRevision(Documento doc, int revisionIndex,
			User usuario) {
		doc.finalizarRevision(revisionIndex, usuario);
		getEntityManager().flush();
		return doc;
	}

	/**
	 * {@inheritDoc}
	 */	
	public Documento finalizarRevision(Documento doc, Long revisionId,
			User usuario) {
		doc.finalizarRevision(revisionId, usuario);
		getEntityManager().flush();
		return doc;
	}

	/**
	 * {@inheritDoc}
	 */	
	public Documento saveDocumento(Documento doc) {
		log.debug("saving documento --> documento's id: " + doc.getId());
		Documento d = getEntityManager().merge(doc);
		getEntityManager().flush();
		return d;
	}

	@Override
	public Documento save(Documento doc) {		
		return saveDocumento(doc);
	}
	
	
}
